#pragma once

#include "Indices.h"
#include "VertexAttributeCollection.h"

namespace Core
{
	enum class PrimitiveType
	{
		Points,
		Lines,
		LineLoop,
		LineStrip,
		Triangles,
		TriangleStrip,
		TriangleFan,
		LinesAdjacency,
		LineStripAdjacency,
		TrianglesAdjacency,
		TriangleStripAdjacency
	};

	enum class WindingOrder
	{
		Clockwise,
		Counterclockwise
	};

	class Mesh
	{
	public:
		Mesh();

		~Mesh();

		VertexAttributeCollection* GetAttributes() const;

		IndicesBase* GetIndices() const;

		PrimitiveType GetPrimitiveType() const;

		WindingOrder GetFrontFaceWindingOrder() const;


		void SetIndices(IndicesBase* indices);

		void SetPrimitiveType(PrimitiveType pt);

		void SetFrontFaceWindingOrder(WindingOrder wo);


	private:
		VertexAttributeCollection* m_pAttributes;
		IndicesBase* m_pIndices;

		PrimitiveType _primitiveType;
		WindingOrder _frontFaceWindingOrder;

	};
}